Demo Scan v SYNAPSE

Otázka od: Petr

22. 7. 2004 18:26

Zdravim

nemohu rozebehnout demo SCAN v Synapse.
Hlasi mi to chybu Incompatible type : 'Array' and 'String'
pri volani procedur Setlength. Misto parametru Ping a ThreadArray
by mel asi byt parametr typu string ? Nebo co je spatne?
Zkousim to na Delphi3.

                                                      Dekuju za opravu, Petr.


V Synapse je to takhle, pouze jsem si nadeklaroval
pole pro 254 predpokladanych pocitacu na lokalni siti C:

Unit PingThread;

interface

uses Classes, PingSend, IPUtils;

type
     PPingResult = ^TPingResult;
     TPingResult = Record
                            IPAdress:String;
                            Exists:Boolean;
                          end;

type
    TPingThread = class(TThread)
    private
      { Private declarations }
    protected
      procedure Execute; override;
    public
      PingResult:TPingResult;
      Ready:Boolean;
      constructor Create(Ping:TPingResult);
    end;

program Scan;

uses SysUtils, IPUtils, PingThread;

var:
   PingCount:Cardinal;
   Ping: array[1..254] of TPingResult;
   ThreadArray:array [1..254] of TPingThread;

       begin
                           .
                           .
                           .

         Setlength (Ping,pingcount); // tady mam chybu
         SetLength (ThreadArray,pingcount); // a tady druhou

                           .
                           .
                           .


Odpovedá: Lukas Gebauer

22. 7. 2004 19:26

> nemohu rozebehnout demo SCAN v Synapse.
> Hlasi mi to chybu Incompatible type : 'Array' and 'String'
> pri volani procedur Setlength. Misto parametru Ping a ThreadArray by
> mel asi byt parametr typu string ? Nebo co je spatne? Zkousim to na
> Delphi3.

Problem je v tom, ze zrovna toto demo nepochazi odemne, a tak to
vypada, ze vyzaduje vyssi verzi Delphi. (nicmene samotna synapse
skutecne Delphi3 podporuje! problem je jen v tomto demu. ;-()

Zitra se na to podivam...



--
Lukas Gebauer.

E-mail: gebauerl@mlp.cz
http://www.ararat.cz/synapse/ - Ararat Synapse - TCP/IP Lib.


Odpovedá: Peter Ondras

23. 7. 2004 7:42

Pred SetLength napis spravnu unitu (napr. synapse.setlength - toto je
len priklad nepoznam tu Synapse tak neviem presne co tam mas napisat.
Musis najst unit kde je SetLength deklarovane a nazov toho unitu musis
napisat na to miesto kde ti to vyhadzuje chybu).


> -----Original Message-----
>
> nemohu rozebehnout demo SCAN v Synapse.
> Hlasi mi to chybu Incompatible type : 'Array' and 'String'
> pri volani procedur Setlength. Misto parametru Ping a ThreadArray
> by mel asi byt parametr typu string ? Nebo co je spatne?
> Zkousim to na Delphi3.


Odpovedá: Pave Gazda

23. 7. 2004 7:39

> var:
> PingCount:Cardinal;
> Ping: array[1..254] of TPingResult;
> ThreadArray:array [1..254] of TPingThread;
>
> begin
> .
> Setlength (Ping,pingcount); // tady mam chybu
> SetLength (ThreadArray,pingcount); // a tady druhou

Proc nastavujes delku pole ?

Pavel
placeny amater


Odpovedá: Milan Tomes

23. 7. 2004 7:30

Pokud by ta chyba byla zpusobena nenalezenim procedury/funkce, tak by
chybova hlaska vypadala nejak takto: Undefined identifier setLength  
BTW setLength je deklarovan (v D7) v unite System, ktera je linkovana
automaticky...

S pozdravem

Milan Tomes




> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of Peter Ondras
> Sent: Friday, July 23, 2004 7:44 AM
>
> Musis najst unit kde je SetLength deklarovane a nazov toho unitu musis
> napisat na to miesto kde ti to vyhadzuje chybu).


Odpovedá: Milan Tomes

23. 7. 2004 7:17

Problem jsi si zpusobil sam. Pole Ping a ThreadArray jsou dle deklarace
staticka, takze jim nelze nastavovat velikost !!!

S pozdravem

Milan Tomes

> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of Petr
> Sent: Thursday, July 22, 2004 7:06 PM
>
> Hlasi mi to chybu Incompatible type : 'Array' and 'String'
> pri volani procedur Setlength. Misto parametru Ping a ThreadArray
> by mel asi byt parametr typu string ? Nebo co je spatne?
>
> V Synapse je to takhle, pouze jsem si nadeklaroval
> pole pro 254 predpokladanych pocitacu na lokalni siti C:
>
> Ping: array[1..254] of TPingResult;
> ThreadArray:array [1..254] of TPingThread;
>
> .
>
> Setlength (Ping,pingcount); // tady mam chybu
> SetLength (ThreadArray,pingcount); // a tady druhou


Odpovedá: Peter Ondras

23. 7. 2004 8:40

Ja som len zle pochopil povodny prispevok, kde som predpokladal, ze
Synapse ma nejake svoje SetLength. Myslel som to skor ako nie nenajdenie
procedury ale nenajdenie spravnej procedury. Zda sa vsak, ze som uplne
vedla  

> -----Original Message-----
>
> Pokud by ta chyba byla zpusobena nenalezenim procedury/funkce, tak by
> chybova hlaska vypadala nejak takto: Undefined identifier setLength
 
> BTW setLength je deklarovan (v D7) v unite System, ktera je linkovana
> automaticky...


Odpovedá: OndraG

23. 7. 2004 12:22

Pokud si dobre vzpominam, tak v Delphi3 jeste nebyly dynamicka pole, proto
D3 znaji SetLength pouze se stringem.....
To demo bylo asi psane ve vyssi verzi Delphi s vyuzitim dynamickych poli

OndraG

----- Original Message -----
From: "Petr" <potuzacek@volny.cz>
> nemohu rozebehnout demo SCAN v Synapse.
> Hlasi mi to chybu Incompatible type : 'Array' and 'String'
> pri volani procedur Setlength. Misto parametru Ping a ThreadArray
> by mel asi byt parametr typu string ? Nebo co je spatne?
> Zkousim to na Delphi3.
>
> Dekuju za opravu,
Petr.


Odpovedá: Petr Potuzak

23. 7. 2004 23:38

Zdravim,

problem jsem si zpusobil jen a pouze tim, ze pouzivam Delphi3, ktere
neumi setlength pro pole, ale jen pro retezce a tudiz pravdu ma OndraG.
, ted jiz to vim !!!

Pro Pave Gazda: predpokladal jsem odpoved od lidi, kteri maji zdrojak
pred sebou a tak jsem napsal jenom vycuc. Na zacatku si pole deklarujes
pro nejaky pocet pocitacu
a tim padem i definujes pocet spoustenych threadu, takhle jsem pochopil
zdrojak a myslim, ze dobre. Z rozdilu zadanych adres se zjisti pocet
skutecne
spustenych threadu a proto si delku pole zmenis na aktualni potrebnou
velikost
tesne pred vlastnim cyklem pingu na jednotlive adresy ze zadaneho
rozsahu.
Podivej se na demo lepe.

Pro Milana Tomese: pouzivam Delphi 3 a demo jsem
nemenil, to nastaveni setlength tam skutecne takhle je.
Asi se opravdu pocita s vyssi verzi Delphi, ackoliv Lukas
Gebauer tvrdi, ze SYNAPSE podporuje i Delphi3.

Dobra, jak to tedy v Delphi3 obejit? Ukol pro Lukase Gebauera  

                                            Dekuju, Petr.




Odpovedá: Petr Potuzak

24. 7. 2004 0:11

Zdravim,

problem jsem si zpusobil jen a pouze tim, ze pouzivam Delphi3, ktere
neumi setlength pro pole, ale jen pro retezce a tudiz pravdu ma OndraG.
, ted jiz to vim !!!

Pro Pave Gazda: predpokladal jsem odpoved od lidi, kteri maji zdrojak
pred sebou a tak jsem napsal jenom vycuc. Na zacatku si pole deklarujes
pro nejaky pocet pocitacu
a tim padem i definujes pocet spoustenych threadu, takhle jsem pochopil
zdrojak a myslim, ze dobre. Z rozdilu zadanych adres se zjisti pocet
skutecne
spustenych threadu a proto si delku pole zmenis na aktualni potrebnou
velikost
tesne pred vlastnim cyklem pingu na jednotlive adresy ze zadaneho
rozsahu.
Podivej se na demo lepe.

Pro Milana Tomese: pouzivam Delphi 3 a demo jsem
nemenil, to nastaveni setlength tam skutecne takhle je.
Asi se opravdu pocita s vyssi verzi Delphi, ackoliv Lukas
Gebauer tvrdi, ze SYNAPSE podporuje i Delphi3.

Dobra, jak to tedy v Delphi3 obejit? Ukol pro Lukase Gebauera  

                                            Dekuju, Petr.


Odpovedá: Lukas Gebauer

24. 7. 2004 12:04

> Pro Milana Tomese: pouzivam Delphi 3 a demo jsem
> nemenil, to nastaveni setlength tam skutecne takhle je.
> Asi se opravdu pocita s vyssi verzi Delphi, ackoliv Lukas
> Gebauer tvrdi, ze SYNAPSE podporuje i Delphi3.

Pozor, Synapse skutecne v delphi3 beha bez sebemensich problemu. To ale
neznamena, ze uplne vsechny prilozene DEMO aplikace pobezi pod Delphi3!
(zvlaste ty demo aplikace, ktere nepochazi odemne...)

Demo aplikace je jen ukazka pouziti, kus zdrojaku, ze ktereho muzes
opisovat a okukovat, jak se se Synapsi zachazi. Ale demo aplikace nejsou
soucast Synapse.

Jiste, mohu si nekdy sednout a to cizi demo prepsat tak, aby chodilo i
pod D3. Nicmene ted radeji misto toho pracuji na nove verzi Synapse. Demo
aplikace jsou uz jen tresnicka na dortu, ale nejdriv je treba se venovat
tomu dortu.  

--
Lukas Gebauer.

E-mail: gebauerl@mlp.cz
WEB: http://www.ararat.cz/synapse - Synapse Delphi and Kylix TCP/IP
Library